<?xml version="1.0" encoding="UTF-8"?>
<!--
 Copyright (C) 2016 - Open Source Geospatial Foundation. All rights reserved.
 This code is licensed under the GPL 2.0 license, available at the root
 application directory.
 -->
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0   http://maven.apache.org/maven-v4_0_0.xsd">

  <modelVersion>4.0.0</modelVersion>
  <groupId>org.geoserver</groupId>
  <artifactId>geoserver</artifactId>
  <version>2.26-SNAPSHOT</version>
  <packaging>pom</packaging>
  <name>GeoServer</name>
  <inceptionYear>2006</inceptionYear>

  <organization>
    <name>Open Source Geospatial Foundation</name>
    <url>http://www.osgeo.org</url>
  </organization>

  <licenses>
    <license>
      <name>General Public License (GPL)</name>
      <url>http://www.gnu.org/copyleft/gpl.txt</url>
    </license>
  </licenses>

  <modules>
    <module>platform</module>
    <module>main</module>
    <module>security</module>
    <module>wcs</module>
    <module>wcs1_0</module>
    <module>wcs1_1</module>
    <module>wcs2_0</module>
    <module>wfs</module>
    <module>wms</module>
    <module>kml</module>
    <module>ows</module>
    <module>gwc</module>
    <module>gwc-rest</module>
    <module>rest</module>
    <module>restconfig</module>
    <module>restconfig-wcs</module>
    <module>restconfig-wfs</module>
    <module>restconfig-wms</module>
    <module>restconfig-wmts</module>
    <module>web</module>
    <module>community</module>
    <module>extension</module>
  </modules>

  <scm>
    <connection>scm:git:git://github.com/geoserver/geoserver.git</connection>
    <developerConnection>scm:git:[fetch=]git://github.com/geoserver/geoserver.git[push=]git@github.com:geoserver/geoserver.git</developerConnection>
    <url>https://github.com/geoserver/geoserver</url>
  </scm>

  <ciManagement>
    <system>hudson</system>
    <url>http://hudson.opengeo.org/hudson/</url>
    <notifiers>
      <notifier>
        <type>mail</type>
        <sendOnError>true</sendOnError>
        <sendOnFailure>true</sendOnFailure>
        <configuration>
          <address>geoserver-devel@lists.sourceforge.net</address>
        </configuration>
      </notifier>
    </notifiers>
  </ciManagement>

  <distributionManagement>
    <repository>
      <uniqueVersion>false</uniqueVersion>
      <id>nexus</id>
      <name>OSGeo Release Repository</name>
      <url>https://repo.osgeo.org/repository/Geoserver-releases/</url>
    </repository>
    <snapshotRepository>
      <uniqueVersion>false</uniqueVersion>
      <id>nexus</id>
      <name>OSGeo Snapshot Repository</name>
      <url>https://repo.osgeo.org/repository/geoserver-snapshots/</url>
    </snapshotRepository>
  </distributionManagement>

  <properties>
    <gs.version>2.26-SNAPSHOT</gs.version>
    <gt.version>32-SNAPSHOT</gt.version>
    <gwc.version>1.26-SNAPSHOT</gwc.version>
    <jts.version>1.19.0</jts.version>
    <spring.version>5.3.34</spring.version>
    <spring.security.version>5.7.12</spring.security.version>
    <spring-integration.version>5.5.18</spring-integration.version>
    <spring.security.oauth2.version>2.5.2.RELEASE</spring.security.oauth2.version>
    <servlet-api.version>3.1.0</servlet-api.version>
    <jetty.version>9.4.52.v20230823</jetty.version>
    <jetty.servlet-api.version>3.1.0</jetty.servlet-api.version>
    <poi.version>5.2.5</poi.version>
    <wicket.version>7.18.0</wicket.version>
    <ant.version>1.10.11</ant.version>
    <httpclient.version>4.5.14</httpclient.version>
    <imageio-ext.version>1.4.11</imageio-ext.version>
    <jaiext.version>1.1.25</jaiext.version>
    <java.awt.headless>true</java.awt.headless>
    <sun.java2d.d3d>true</sun.java2d.d3d>
    <jvm.opts></jvm.opts>
    <jalopy.phase>disabled</jalopy.phase>
    <jalopy.srcExcludesPattern>disabled</jalopy.srcExcludesPattern>
    <test.maxHeapSize>512M</test.maxHeapSize>
    <test.excludedGroups></test.excludedGroups>
    <test.exclude.pattern>none</test.exclude.pattern>
    <quietTests>true</quietTests>
    <remoteOwsTests>false</remoteOwsTests>
    <maven.build.timestamp.format>dd-MMM-yyyy HH:mm</maven.build.timestamp.format>
    <build.timestamp>${maven.build.timestamp}</build.timestamp>
    <build.hudsonId>-1</build.hudsonId>
    <fork.javac>false</fork.javac>
    <javac.maxHeapSize>256M</javac.maxHeapSize>
    <image.tests>true</image.tests>
    <interactive.image>false</interactive.image>
    <windows.leniency>true</windows.leniency>
    <gf.version>3.7-SNAPSHOT</gf.version>
    <mf.version>2.3.0</mf.version>
    <jasypt.version>1.9.2</jasypt.version>
    <hibernate-version>3.6.9.Final</hibernate-version>
    <hibernate-generic-dao-version>1.1.0</hibernate-generic-dao-version>
    <hibernate-spatial-version>1.1.3.2</hibernate-spatial-version>
    <opengeo-geodb.version>0.9</opengeo-geodb.version>
    <!-- NOTE: be careful if upgrading log4j, check transitive slf4j with netcdf and netcdf-out -->
    <log4j.version>2.17.2</log4j.version>
    <joda-time.version>2.8.1</joda-time.version>
    <git.commit.useNative>false</git.commit.useNative>
    <git.commit.runOnlyOnce>true</git.commit.runOnlyOnce>
    <eclipse.emf.version>2.15.0</eclipse.emf.version>
    <jackson1.version>1.9.13</jackson1.version>
    <jackson2.version>2.17.1</jackson2.version>
    <jackson2.databind.version>${jackson2.version}</jackson2.databind.version>
    <compress-lzf.version>1.0.3</compress-lzf.version>
    <marlin.version>0.9.3</marlin.version>
    <postgresql.jdbc.version>42.7.3</postgresql.jdbc.version>
    <postgis.jdbc.version>1.3.3</postgis.jdbc.version>
    <oracle.jdbc.version>19.18.0.0</oracle.jdbc.version>
    <mysql.jdbc.version>8.0.28</mysql.jdbc.version>
    <solrj.version>8.11.3</solrj.version>
    <mockito.version>5.6.0</mockito.version>
    <jacoco.version>0.8.6</jacoco.version>
    <hazelcast.version>5.3.6</hazelcast.version>
    <xalan.version>2.7.3</xalan.version>
    <argLine>-Xmx${test.maxHeapSize} -enableassertions ${jvm.opts} -Djava.awt.headless=${java.awt.headless} -Dsun.java2d.d3d=${sun.java2d.d3d} -DremoteOwsTests=${remoteOwsTests} -DquietTests=${quietTests} -Dorg.geotools.image.test.enabled=${image.tests} -Dorg.geotools.image.test.interactive=${interactive.image} -Duser.timezone=${user.timezone} -Dwindows.leniency=${windows.leniency} -XX:+TieredCompilation -XX:TieredStopAtLevel=1 -XX:ReservedCodeCacheSize=240m</argLine>
    <spotless.action>apply</spotless.action>
    <spotless.apply.skip>false</spotless.apply.skip>
    <pom.fmt.action>sort</pom.fmt.action>
    <pom.fmt.skip>${spotless.apply.skip}</pom.fmt.skip>
    <errorProneFlags></errorProneFlags>
    <errorProne.version>2.18.0</errorProne.version>
    <javac.version>9+181-r4173-1</javac.version>
    <pmd.version>6.42.0</pmd.version>
    <hsql.version>2.7.2</hsql.version>
    <checkstyle.skip>false</checkstyle.skip>
    <qa>false</qa>
    <lint>deprecation,unchecked</lint>
  </properties>

  <dependencyManagement>
    <dependencies>
      <!-- GeoServer -->
      <dependency>
        <groupId>org.geoserver</groupId>
        <artifactId>gs-platform</artifactId>
        <version>${gs.version}</version>
      </dependency>
      <dependency>
        <groupId>org.geoserver</groupId>
        <artifactId>gs-platform</artifactId>
        <version>${gs.version}</version>
        <classifier>tests</classifier>
      </dependency>
      <dependency>
        <groupId>org.geoserver</groupId>
        <artifactId>gs-ows</artifactId>
        <version>${gs.version}</version>
      </dependency>
      <dependency>
        <groupId>org.geoserver</groupId>
        <artifactId>gs-ows</artifactId>
        <version>${gs.version}</version>
        <classifier>tests</classifier>
      </dependency>
      <dependency>
        <groupId>org.geoserver</groupId>
        <artifactId>gs-main</artifactId>
        <version>${gs.version}</version>
      </dependency>
      <dependency>
        <groupId>org.geoserver</groupId>
        <artifactId>gs-main</artifactId>
        <version>${gs.version}</version>
        <classifier>tests</classifier>
      </dependency>
      <dependency>
        <groupId>org.geoserver</groupId>
        <artifactId>gs-wcs</artifactId>
        <version>${gs.version}</version>
      </dependency>
      <dependency>
        <groupId>org.geoserver</groupId>
        <artifactId>gs-wcs1_0</artifactId>
        <version>${gs.version}</version>
      </dependency>
      <dependency>
        <groupId>org.geoserver</groupId>
        <artifactId>gs-wcs1_1</artifactId>
        <version>${gs.version}</version>
      </dependency>
      <dependency>
        <groupId>org.geoserver</groupId>
        <artifactId>gs-wcs2_0</artifactId>
        <version>${gs.version}</version>
      </dependency>
      <dependency>
        <groupId>org.geoserver</groupId>
        <artifactId>gs-wcs2_0</artifactId>
        <version>${gs.version}</version>
        <classifier>tests</classifier>
      </dependency>
      <dependency>
        <groupId>org.geoserver</groupId>
        <artifactId>gs-wfs</artifactId>
        <version>${gs.version}</version>
      </dependency>
      <dependency>
        <groupId>org.geoserver</groupId>
        <artifactId>gs-wms</artifactId>
        <version>${gs.version}</version>
      </dependency>
      <dependency>
        <groupId>org.geoserver</groupId>
        <artifactId>gs-wms</artifactId>
        <version>${gs.version}</version>
        <classifier>tests</classifier>
      </dependency>
      <dependency>
        <groupId>org.geoserver</groupId>
        <artifactId>gs-gwc</artifactId>
        <version>${gs.version}</version>
      </dependency>
      <dependency>
        <groupId>org.geoserver</groupId>
        <artifactId>gs-gwc-rest</artifactId>
        <version>${gs.version}</version>
      </dependency>
      <dependency>
        <groupId>org.geoserver</groupId>
        <artifactId>gs-rest</artifactId>
        <version>${gs.version}</version>
      </dependency>
      <dependency>
        <groupId>org.geoserver.web</groupId>
        <artifactId>gs-web-core</artifactId>
        <version>${gs.version}</version>
      </dependency>
      <dependency>
        <groupId>org.geoserver</groupId>
        <artifactId>gs-kml</artifactId>
        <version>${gs.version}</version>
      </dependency>

      <!-- GeoTools -->
      <dependency>
        <groupId>org.geotools</groupId>
        <artifactId>gt-geotools</artifactId>
        <version>${gt.version}</version>
      </dependency>
      <dependency>
        <groupId>org.geotools</groupId>
        <artifactId>gt-opengis</artifactId>
        <version>${gt.version}</version>
      </dependency>
      <dependency>
        <groupId>org.geotools</groupId>
        <artifactId>gt-arcgrid</artifactId>
        <version>${gt.version}</version>
      </dependency>
      <dependency>
        <groupId>org.geotools</groupId>
        <artifactId>gt-geotiff</artifactId>
        <version>${gt.version}</version>
      </dependency>
      <dependency>
        <groupId>org.geotools</groupId>
        <artifactId>gt-jp2k</artifactId>
        <version>${gt.version}</version>
      </dependency>
      <dependency>
        <groupId>org.geotools</groupId>
        <artifactId>gt-netcdf</artifactId>
        <version>${gt.version}</version>
      </dependency>
      <dependency>
        <groupId>org.geotools</groupId>
        <artifactId>gt-image</artifactId>
        <version>${gt.version}</version>
      </dependency>
      <dependency>
        <groupId>org.geotools</groupId>
        <artifactId>gt-imagemosaic</artifactId>
        <version>${gt.version}</version>
      </dependency>
      <dependency>
        <groupId>org.geotools</groupId>
        <artifactId>gt-imagepyramid</artifactId>
        <version>${gt.version}</version>
      </dependency>
      <dependency>
        <groupId>org.geotools</groupId>
        <artifactId>gt-main</artifactId>
        <version>${gt.version}</version>
      </dependency>
      <dependency>
        <groupId>org.geotools</groupId>
        <artifactId>gt-render</artifactId>
        <version>${gt.version}</version>
      </dependency>
      <dependency>
        <groupId>org.geotools</groupId>
        <artifactId>gt-svg</artifactId>
        <version>${gt.version}</version>
      </dependency>
      <dependency>
        <groupId>org.geotools</groupId>
        <artifactId>gt-property</artifactId>
        <version>${gt.version}</version>
      </dependency>
      <dependency>
        <groupId>org.geotools</groupId>
        <artifactId>gt-epsg-hsql</artifactId>
        <version>${gt.version}</version>
      </dependency>
      <dependency>
        <groupId>org.geotools</groupId>
        <artifactId>gt-iau-wkt</artifactId>
        <version>${gt.version}</version>
      </dependency>
      <dependency>
        <groupId>org.geotools</groupId>
        <artifactId>gt-epsg-extension</artifactId>
        <version>${gt.version}</version>
      </dependency>
      <dependency>
        <groupId>org.geotools</groupId>
        <artifactId>gt-coverage</artifactId>
        <version>${gt.version}</version>
      </dependency>
      <dependency>
        <groupId>org.geotools</groupId>
        <artifactId>gt-referencing</artifactId>
        <version>${gt.version}</version>
      </dependency>
      <dependency>
        <groupId>org.geotools.jdbc</groupId>
        <artifactId>gt-jdbc-h2</artifactId>
        <version>${gt.version}</version>
      </dependency>
      <dependency>
        <groupId>org.geotools.xsd</groupId>
        <artifactId>gt-xsd-core</artifactId>
        <version>${gt.version}</version>
      </dependency>
      <dependency>
        <groupId>org.geotools.xsd</groupId>
        <artifactId>gt-xsd-core</artifactId>
        <version>${gt.version}</version>
        <classifier>tests</classifier>
      </dependency>
      <dependency>
        <groupId>org.geotools.xsd</groupId>
        <artifactId>gt-xsd-ows</artifactId>
        <version>${gt.version}</version>
      </dependency>
      <dependency>
        <groupId>org.geotools.xsd</groupId>
        <artifactId>gt-xsd-gml2</artifactId>
        <version>${gt.version}</version>
      </dependency>
      <dependency>
        <groupId>org.geotools.xsd</groupId>
        <artifactId>gt-xsd-gml3</artifactId>
        <version>${gt.version}</version>
      </dependency>
      <dependency>
        <groupId>org.geotools.xsd</groupId>
        <artifactId>gt-xsd-filter</artifactId>
        <version>${gt.version}</version>
      </dependency>
      <dependency>
        <groupId>org.geotools.xsd</groupId>
        <artifactId>gt-xsd-wfs</artifactId>
        <version>${gt.version}</version>
      </dependency>
      <dependency>
        <groupId>org.geotools.xsd</groupId>
        <artifactId>gt-xsd-wcs</artifactId>
        <version>${gt.version}</version>
      </dependency>
      <dependency>
        <groupId>org.geotools.xsd</groupId>
        <artifactId>gt-xsd-sld</artifactId>
        <version>${gt.version}</version>
      </dependency>
      <dependency>
        <groupId>org.geotools</groupId>
        <artifactId>gt-shapefile</artifactId>
        <version>${gt.version}</version>
      </dependency>
      <dependency>
        <groupId>org.geotools</groupId>
        <artifactId>gt-sample-data</artifactId>
        <version>${gt.version}</version>
      </dependency>
      <dependency>
        <groupId>org.geotools</groupId>
        <artifactId>gt-jdbc</artifactId>
        <version>${gt.version}</version>
      </dependency>
      <dependency>
        <groupId>org.geotools</groupId>
        <artifactId>gt-postgis</artifactId>
        <version>${gt.version}</version>
      </dependency>
      <dependency>
        <groupId>org.geotools.jdbc</groupId>
        <artifactId>gt-jdbc-postgis</artifactId>
        <version>${gt.version}</version>
      </dependency>
      <dependency>
        <groupId>org.geotools.jdbc</groupId>
        <artifactId>gt-jdbc-oracle</artifactId>
        <version>${gt.version}</version>
      </dependency>
      <dependency>
        <groupId>org.geotools.jdbc</groupId>
        <artifactId>gt-jdbc-db2</artifactId>
        <version>${gt.version}</version>
      </dependency>
      <dependency>
        <groupId>org.geotools.jdbc</groupId>
        <artifactId>gt-jdbc-mysql</artifactId>
        <version>${gt.version}</version>
      </dependency>
      <dependency>
        <groupId>org.geotools.jdbc</groupId>
        <artifactId>gt-jdbc-sqlserver</artifactId>
        <version>${gt.version}</version>
      </dependency>
      <dependency>
        <groupId>org.geotools</groupId>
        <artifactId>gt-wfs-ng</artifactId>
        <version>${gt.version}</version>
      </dependency>
      <dependency>
        <groupId>org.geotools</groupId>
        <artifactId>gt-wms</artifactId>
        <version>${gt.version}</version>
      </dependency>
      <dependency>
        <groupId>org.geotools</groupId>
        <artifactId>gt-wmts</artifactId>
        <version>${gt.version}</version>
      </dependency>
      <dependency>
        <groupId>org.geotools</groupId>
        <artifactId>gt-postgis-versioned</artifactId>
        <version>${gt.version}</version>
      </dependency>
      <dependency>
        <groupId>org.geotools</groupId>
        <artifactId>gt-metadata</artifactId>
        <version>${gt.version}</version>
      </dependency>
      <dependency>
        <groupId>org.geotools</groupId>
        <artifactId>gt-cql</artifactId>
        <version>${gt.version}</version>
      </dependency>
      <dependency>
        <groupId>org.geotools</groupId>
        <artifactId>gt-cql-json</artifactId>
        <version>${gt.version}</version>
      </dependency>
      <dependency>
        <groupId>org.geotools</groupId>
        <artifactId>gt-csv</artifactId>
        <version>${gt.version}</version>
      </dependency>
      <dependency>
        <groupId>org.geotools.ogc</groupId>
        <artifactId>net.opengis.ows</artifactId>
        <version>${gt.version}</version>
      </dependency>
      <dependency>
        <groupId>org.geotools.ogc</groupId>
        <artifactId>net.opengis.wfs</artifactId>
        <version>${gt.version}</version>
      </dependency>
      <dependency>
        <groupId>org.geotools.ogc</groupId>
        <artifactId>net.opengis.wfsv</artifactId>
        <version>${gt.version}</version>
      </dependency>
      <dependency>
        <groupId>org.geotools.ogc</groupId>
        <artifactId>net.opengis.wcs</artifactId>
        <version>${gt.version}</version>
      </dependency>
      <dependency>
        <groupId>org.geotools</groupId>
        <artifactId>gt-imageio-ext-gdal</artifactId>
        <version>${gt.version}</version>
      </dependency>
      <dependency>
        <groupId>org.geotools</groupId>
        <artifactId>gt-charts</artifactId>
        <version>${gt.version}</version>
      </dependency>
      <dependency>
        <groupId>org.geotools</groupId>
        <artifactId>gt-process</artifactId>
        <version>${gt.version}</version>
      </dependency>
      <dependency>
        <groupId>org.geotools</groupId>
        <artifactId>gt-process-geometry</artifactId>
        <version>${gt.version}</version>
      </dependency>
      <dependency>
        <groupId>org.geotools</groupId>
        <artifactId>gt-process-raster</artifactId>
        <version>${gt.version}</version>
      </dependency>
      <dependency>
        <groupId>org.geotools</groupId>
        <artifactId>gt-process-feature</artifactId>
        <version>${gt.version}</version>
      </dependency>
      <dependency>
        <groupId>org.geotools</groupId>
        <artifactId>gt-geopkg</artifactId>
        <version>${gt.version}</version>
      </dependency>
      <dependency>
        <groupId>org.geotools</groupId>
        <artifactId>gt-mongodb</artifactId>
        <version>${gt.version}</version>
      </dependency>
      <dependency>
        <groupId>org.geotools</groupId>
        <artifactId>gt-transform</artifactId>
        <version>${gt.version}</version>
      </dependency>
      <dependency>
        <groupId>org.geotools</groupId>
        <artifactId>gt-stac-store</artifactId>
        <version>${gt.version}</version>
      </dependency>
      <dependency>
        <groupId>org.geotools</groupId>
        <artifactId>gt-vector-mosaic</artifactId>
        <version>${gt.version}</version>
      </dependency>
      <dependency>
        <groupId>org.geotools</groupId>
        <artifactId>gt-brewer</artifactId>
        <version>${gt.version}</version>
      </dependency>

      <!-- GeoWebCache: embeded -->
      <dependency>
        <groupId>org.geowebcache</groupId>
        <artifactId>gwc-core</artifactId>
        <version>${gwc.version}</version>
        <exclusions>
          <exclusion>
            <artifactId>xstream</artifactId>
            <groupId>com.thoughtworks.xstream</groupId>
          </exclusion>
          <!-- Spring dependencies -->
          <exclusion>
            <artifactId>spring-beans</artifactId>
            <groupId>org.springframework</groupId>
          </exclusion>
          <exclusion>
            <artifactId>spring-core</artifactId>
            <groupId>org.springframework</groupId>
          </exclusion>
          <exclusion>
            <artifactId>spring-context</artifactId>
            <groupId>org.springframework</groupId>
          </exclusion>
          <exclusion>
            <artifactId>spring-webmvc</artifactId>
            <groupId>org.springframework</groupId>
          </exclusion>
          <!-- Java Advanced Imaging (JAI) -->
          <exclusion>
            <artifactId>jai_core</artifactId>
            <groupId>javax.media</groupId>
          </exclusion>
          <exclusion>
            <artifactId>jai_codec</artifactId>
            <groupId>javax.media</groupId>
          </exclusion>
          <exclusion>
            <artifactId>jai_imageio</artifactId>
            <groupId>javax.media</groupId>
          </exclusion>
        </exclusions>
      </dependency>
      <dependency>
        <groupId>org.geowebcache</groupId>
        <artifactId>gwc-core</artifactId>
        <version>${gwc.version}</version>
        <classifier>tests</classifier>
        <scope>test</scope>
      </dependency>
      <dependency>
        <groupId>org.geowebcache</groupId>
        <artifactId>gwc-georss</artifactId>
        <version>${gwc.version}</version>
        <exclusions>
          <exclusion>
            <artifactId>gt-coverage</artifactId>
            <groupId>org.geotools</groupId>
          </exclusion>
        </exclusions>
      </dependency>
      <dependency>
        <groupId>org.geowebcache</groupId>
        <artifactId>gwc-gmaps</artifactId>
        <version>${gwc.version}</version>
      </dependency>
      <dependency>
        <groupId>org.geowebcache</groupId>
        <artifactId>gwc-kml</artifactId>
        <version>${gwc.version}</version>
      </dependency>
      <dependency>
        <groupId>org.geowebcache</groupId>
        <artifactId>gwc-rest</artifactId>
        <version>${gwc.version}</version>
      </dependency>
      <dependency>
        <groupId>org.geowebcache</groupId>
        <artifactId>gwc-tms</artifactId>
        <version>${gwc.version}</version>
      </dependency>
      <dependency>
        <groupId>org.geowebcache</groupId>
        <artifactId>gwc-ve</artifactId>
        <version>${gwc.version}</version>
      </dependency>
      <dependency>
        <groupId>org.geowebcache</groupId>
        <artifactId>gwc-wms</artifactId>
        <version>${gwc.version}</version>
        <exclusions>
          <exclusion>
            <artifactId>gt-wms</artifactId>
            <groupId>org.geotools</groupId>
          </exclusion>
        </exclusions>
      </dependency>
      <dependency>
        <groupId>org.geowebcache</groupId>
        <artifactId>gwc-wmts</artifactId>
        <version>${gwc.version}</version>
      </dependency>
      <dependency>
        <groupId>org.geowebcache</groupId>
        <artifactId>gwc-diskquota-jdbc</artifactId>
        <version>${gwc.version}</version>
      </dependency>
      <dependency>
        <groupId>org.geowebcache</groupId>
        <artifactId>gwc-aws-s3</artifactId>
        <version>${gwc.version}</version>
      </dependency>

      <!-- Third-party -->
      <dependency>
        <groupId>com.oracle.database.jdbc</groupId>
        <artifactId>ojdbc8</artifactId>
        <version>${oracle.jdbc.version}</version>
      </dependency>
      <dependency>
        <groupId>com.google.code.gson</groupId>
        <artifactId>gson</artifactId>
        <version>2.3.1</version>
      </dependency>
      <dependency>
        <groupId>com.googlecode.genericdao</groupId>
        <artifactId>search-jpa-hibernate</artifactId>
        <version>${hibernate-generic-dao-version}</version>
      </dependency>
      <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>${mysql.jdbc.version}</version>
      </dependency>
      <dependency>
        <groupId>org.jdom</groupId>
        <artifactId>jdom2</artifactId>
        <version>2.0.6.1</version>
      </dependency>
      <dependency>
        <groupId>org.wkb4j</groupId>
        <artifactId>wkb4j</artifactId>
        <version>1.0-RC1</version>
      </dependency>
      <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>4.13.1</version>
        <scope>test</scope>
      </dependency>
      <dependency>
        <groupId>org.awaitility</groupId>
        <artifactId>awaitility</artifactId>
        <version>4.2.0</version>
        <scope>test</scope>
      </dependency>
      <dependency>
        <groupId>org.hamcrest</groupId>
        <artifactId>hamcrest-library</artifactId>
        <version>1.3</version>
      </dependency>
      <dependency>
        <groupId>org.hamcrest</groupId>
        <artifactId>hamcrest-core</artifactId>
        <version>1.3</version>
      </dependency>
      <dependency>
        <groupId>org.hamcrest</groupId>
        <artifactId>hamcrest-integration</artifactId>
        <version>1.3</version>
      </dependency>
      <dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-core</artifactId>
        <version>${hibernate-version}</version>
      </dependency>
      <dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-entitymanager</artifactId>
        <version>${hibernate-version}</version>
      </dependency>
      <dependency>
        <groupId>org.hibernatespatial</groupId>
        <artifactId>hibernate-spatial</artifactId>
        <version>${hibernate-spatial-version}</version>
        <!-- fork: https://github.com/geosolutions-it/hibernate-spatial -->
      </dependency>
      <dependency>
        <groupId>org.hibernatespatial</groupId>
        <artifactId>hibernate-spatial-h2-geodb</artifactId>
        <version>${hibernate-spatial-version}</version>
      </dependency>
      <dependency>
        <groupId>xmlunit</groupId>
        <artifactId>xmlunit</artifactId>
        <version>1.6</version>
      </dependency>
      <dependency>
        <groupId>org.easymock</groupId>
        <artifactId>easymock</artifactId>
        <version>5.2.0</version>
      </dependency>
      <dependency>
        <groupId>cglib</groupId>
        <artifactId>cglib-nodep</artifactId>
        <version>3.3.0</version>
      </dependency>
      <dependency>
        <groupId>httpunit</groupId>
        <artifactId>httpunit</artifactId>
        <version>1.6</version>
      </dependency>
      <dependency>
        <groupId>org.mockito</groupId>
        <artifactId>mockito-core</artifactId>
        <version>${mockito.version}</version>
      </dependency>
      <dependency>
        <groupId>xalan</groupId>
        <artifactId>xalan</artifactId>
        <version>${xalan.version}</version>
      </dependency>
      <dependency>
        <groupId>xalan</groupId>
        <artifactId>serializer</artifactId>
        <version>${xalan.version}</version>
      </dependency>
      <dependency>
        <groupId>org.codehaus.jettison</groupId>
        <artifactId>jettison</artifactId>
        <version>1.5.4</version>
      </dependency>
      <dependency>
        <groupId>lucene</groupId>
        <artifactId>lucene</artifactId>
        <version>1.4.3</version>
      </dependency>
      <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>javax.servlet-api</artifactId>
        <version>${servlet-api.version}</version>
      </dependency>
      <dependency>
        <groupId>oro</groupId>
        <artifactId>oro</artifactId>
        <version>2.0.8</version>
      </dependency>
      <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-test</artifactId>
        <version>${spring.version}</version>
      </dependency>
      <dependency>
        <groupId>commons-beanutils</groupId>
        <artifactId>commons-beanutils</artifactId>
        <version>1.9.4</version>
      </dependency>
      <dependency>
        <groupId>commons-digester</groupId>
        <artifactId>commons-digester</artifactId>
        <version>1.7</version>
      </dependency>
      <dependency>
        <groupId>commons-fileupload</groupId>
        <artifactId>commons-fileupload</artifactId>
        <version>1.5</version>
      </dependency>
      <dependency>
        <groupId>commons-io</groupId>
        <artifactId>commons-io</artifactId>
        <version>2.16.1</version>
      </dependency>
      <dependency>
        <groupId>commons-codec</groupId>
        <artifactId>commons-codec</artifactId>
        <version>1.17.0</version>
      </dependency>
      <dependency>
        <groupId>commons-httpclient</groupId>
        <artifactId>commons-httpclient</artifactId>
        <version>3.1</version>
      </dependency>
      <dependency>
        <groupId>org.apache.commons</groupId>
        <artifactId>commons-lang3</artifactId>
        <version>3.14.0</version>
      </dependency>
      <dependency>
        <groupId>commons-validator</groupId>
        <artifactId>commons-validator</artifactId>
        <version>1.1.4</version>
      </dependency>
      <dependency>
        <groupId>commons-logging</groupId>
        <artifactId>commons-logging</artifactId>
        <version>1.2</version>
      </dependency>
      <dependency>
        <groupId>commons-pool</groupId>
        <artifactId>commons-pool</artifactId>
        <version>1.5.4</version>
      </dependency>
      <dependency>
        <groupId>commons-collections</groupId>
        <artifactId>commons-collections</artifactId>
        <version>3.2.2</version>
      </dependency>
      <dependency>
        <groupId>commons-cli</groupId>
        <artifactId>commons-cli</artifactId>
        <version>1.4</version>
      </dependency>
      <dependency>
        <groupId>jaxen</groupId>
        <artifactId>jaxen</artifactId>
        <version>1.1.6</version>
      </dependency>
      <dependency>
        <groupId>org.apache.commons</groupId>
        <artifactId>commons-collections4</artifactId>
        <version>4.4</version>
      </dependency>
      <dependency>
        <groupId>org.apache.commons</groupId>
        <artifactId>commons-text</artifactId>
        <version>1.12.0</version>
      </dependency>
      <dependency>
        <groupId>commons-dbcp</groupId>
        <artifactId>commons-dbcp</artifactId>
        <version>1.4</version>
      </dependency>
      <dependency>
        <groupId>org.apache.commons</groupId>
        <artifactId>commons-vfs2</artifactId>
        <version>2.0</version>
      </dependency>
      <dependency>
        <groupId>org.apache.commons</groupId>
        <artifactId>commons-exec</artifactId>
        <version>1.3</version>
      </dependency>
      <dependency>
        <groupId>com.jayway.jsonpath</groupId>
        <artifactId>json-path</artifactId>
        <version>2.9.0</version>
      </dependency>
      <dependency>
        <!-- this version should match with that used in com.jayway.jsonpath:json-path;
        which provides runtime scope; however gs-auth has a compile time dependency-->
        <groupId>net.minidev</groupId>
        <artifactId>json-smart</artifactId>
        <version>2.5.0</version>
        <scope>compile</scope>
      </dependency>
      <dependency>
        <groupId>org.apache.httpcomponents</groupId>
        <artifactId>httpcore</artifactId>
        <version>4.4.16</version>
      </dependency>
      <dependency>
        <groupId>org.apache.httpcomponents</groupId>
        <artifactId>httpclient</artifactId>
        <version>${httpclient.version}</version>
        <exclusions>
          <exclusion>
            <artifactId>commons-logging</artifactId>
            <groupId>commons-logging</groupId>
          </exclusion>
        </exclusions>
      </dependency>
      <dependency>
        <groupId>org.apache.httpcomponents</groupId>
        <artifactId>httpclient-cache</artifactId>
        <version>${httpclient.version}</version>
      </dependency>

      <!-- logging dependencies -->
      <dependency>
        <groupId>org.apache.logging.log4j</groupId>
        <artifactId>log4j-api</artifactId>
        <version>${log4j.version}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.logging.log4j</groupId>
        <artifactId>log4j-core</artifactId>
        <version>${log4j.version}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.logging.log4j</groupId>
        <artifactId>log4j-1.2-api</artifactId>
        <version>${log4j.version}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.logging.log4j</groupId>
        <artifactId>log4j-jul</artifactId>
        <version>${log4j.version}</version>
      </dependency>
      <!-- bridge slf4j to log4j -->
      <dependency>
        <groupId>org.apache.logging.log4j</groupId>
        <artifactId>log4j-slf4j-impl</artifactId>
        <version>${log4j.version}</version>
      </dependency>
      <!-- bridge commons-logging to log4j -->
      <dependency>
        <groupId>org.apache.logging.log4j</groupId>
        <artifactId>log4j-jcl</artifactId>
        <version>${log4j.version}</version>
      </dependency>

      <!-- springframework -->
      <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-beans</artifactId>
        <version>${spring.version}</version>
      </dependency>
      <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-core</artifactId>
        <version>${spring.version}</version>
      </dependency>
      <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-context</artifactId>
        <version>${spring.version}</version>
      </dependency>
      <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-webmvc</artifactId>
        <version>${spring.version}</version>
      </dependency>
      <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-expression</artifactId>
        <version>${spring.version}</version>
      </dependency>
      <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-aop</artifactId>
        <version>${spring.version}</version>
      </dependency>
      <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-tx</artifactId>
        <version>${spring.version}</version>
      </dependency>
      <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-jdbc</artifactId>
        <version>${spring.version}</version>
      </dependency>
      <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-web</artifactId>
        <version>${spring.version}</version>
      </dependency>
      <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-jms</artifactId>
        <version>${spring.version}</version>
      </dependency>
      <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-oxm</artifactId>
        <version>${spring.version}</version>
      </dependency>
      <dependency>
        <groupId>org.springframework.security</groupId>
        <artifactId>spring-security-core</artifactId>
        <version>${spring.security.version}</version>
      </dependency>
      <dependency>
        <groupId>org.springframework.security</groupId>
        <artifactId>spring-security-ldap</artifactId>
        <version>${spring.security.version}</version>
      </dependency>
      <dependency>
        <groupId>org.springframework.ldap</groupId>
        <artifactId>spring-ldap-test</artifactId>
        <version>2.3.2.RELEASE</version>
      </dependency>
      <dependency>
        <groupId>org.springframework.security</groupId>
        <artifactId>spring-security-web</artifactId>
        <version>${spring.security.version}</version>
      </dependency>
      <dependency>
        <groupId>org.springframework.security</groupId>
        <artifactId>spring-security-config</artifactId>
        <version>${spring.security.version}</version>
      </dependency>
      <dependency>
        <groupId>org.springframework.security</groupId>
        <artifactId>spring-security-cas</artifactId>
        <version>${spring.security.version}</version>
      </dependency>
      <dependency>
        <groupId>org.springframework.security</groupId>
        <artifactId>spring-security-oauth2-core</artifactId>
        <version>${spring.security.version}</version>
      </dependency>
      <dependency>
        <groupId>org.springframework.security</groupId>
        <artifactId>spring-security-crypto</artifactId>
        <version>${spring.security.version}</version>
      </dependency>
      <dependency>
        <groupId>org.springframework.security.oauth</groupId>
        <artifactId>spring-security-oauth2</artifactId>
        <version>${spring.security.oauth2.version}</version>
      </dependency>
      <dependency>
        <groupId>org.jasypt</groupId>
        <artifactId>jasypt</artifactId>
        <version>${jasypt.version}</version>
      </dependency>
      <dependency>
        <groupId>org.jasypt</groupId>
        <artifactId>jasypt-springsecurity3</artifactId>
        <version>${jasypt.version}</version>
      </dependency>
      <dependency>
        <groupId>org.bouncycastle</groupId>
        <artifactId>bcprov-jdk15on</artifactId>
        <version>1.69</version>
      </dependency>

      <!-- wicket framework -->
      <dependency>
        <groupId>org.apache.wicket</groupId>
        <artifactId>wicket-core</artifactId>
        <version>${wicket.version}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.wicket</groupId>
        <artifactId>wicket-util</artifactId>
        <version>${wicket.version}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.wicket</groupId>
        <artifactId>wicket-request</artifactId>
        <version>${wicket.version}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.wicket</groupId>
        <artifactId>wicket-spring</artifactId>
        <version>${wicket.version}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.wicket</groupId>
        <artifactId>wicket-extensions</artifactId>
        <version>${wicket.version}</version>
      </dependency>
      <dependency>
        <groupId>org.wicketstuff</groupId>
        <artifactId>wicketstuff-select2</artifactId>
        <version>${wicket.version}</version>
      </dependency>

      <dependency>
        <groupId>org.mapfish.print</groupId>
        <artifactId>print-lib</artifactId>
        <version>${mf.version}</version>
      </dependency>
      <dependency>
        <groupId>com.github.librepdf</groupId>
        <artifactId>openpdf</artifactId>
        <version>1.3.26</version>
      </dependency>
      <dependency>
        <groupId>org.eclipse.jetty</groupId>
        <artifactId>jetty-server</artifactId>
        <version>${jetty.version}</version>
      </dependency>
      <dependency>
        <groupId>org.eclipse.jetty</groupId>
        <artifactId>jetty-jndi</artifactId>
        <version>${jetty.version}</version>
      </dependency>
      <dependency>
        <groupId>org.eclipse.jetty</groupId>
        <artifactId>jetty-plus</artifactId>
        <version>${jetty.version}</version>
      </dependency>
      <dependency>
        <groupId>org.eclipse.jetty</groupId>
        <artifactId>jetty-util</artifactId>
        <version>${jetty.version}</version>
      </dependency>
      <dependency>
        <groupId>org.eclipse.jetty</groupId>
        <artifactId>jetty-servlets</artifactId>
        <version>${jetty.version}</version>
      </dependency>
      <dependency>
        <groupId>commons-el</groupId>
        <artifactId>commons-el</artifactId>
        <version>1.0</version>
      </dependency>
      <dependency>
        <groupId>org.apache.ant</groupId>
        <artifactId>ant</artifactId>
        <version>${ant.version}</version>
      </dependency>
      <dependency>
        <groupId>javax.media</groupId>
        <artifactId>jai_core</artifactId>
        <version>1.1.3</version>
      </dependency>
      <dependency>
        <groupId>javax.media</groupId>
        <artifactId>jai_codec</artifactId>
        <version>1.1.3</version>
      </dependency>
      <dependency>
        <groupId>javax.media</groupId>
        <artifactId>jai_imageio</artifactId>
        <version>1.1</version>
      </dependency>
      <dependency>
        <groupId>it.geosolutions.jaiext.concurrent-tile-cache</groupId>
        <artifactId>jt-concurrent-tile-cache</artifactId>
        <version>${jaiext.version}</version>
      </dependency>

      <!-- Text -->
      <dependency>
        <groupId>org.freemarker</groupId>
        <artifactId>freemarker</artifactId>
        <version>2.3.31</version>
      </dependency>
      <dependency>
        <groupId>net.sf.json-lib</groupId>
        <artifactId>json-lib</artifactId>
        <version>2.4.2-geoserver</version>
        <!-- fork: https://github.com/geosolutions-it/Json-lib -->
      </dependency>
      <dependency>
        <groupId>com.fasterxml.jackson.core</groupId>
        <artifactId>jackson-core</artifactId>
        <version>${jackson2.version}</version>
      </dependency>
      <dependency>
        <groupId>com.fasterxml.jackson.core</groupId>
        <artifactId>jackson-annotations</artifactId>
        <version>${jackson2.version}</version>
      </dependency>
      <dependency>
        <groupId>com.fasterxml.jackson.core</groupId>
        <artifactId>jackson-databind</artifactId>
        <version>${jackson2.databind.version}</version>
      </dependency>
      <dependency>
        <groupId>com.fasterxml.jackson.dataformat</groupId>
        <artifactId>jackson-dataformat-yaml</artifactId>
        <version>${jackson2.version}</version>
      </dependency>
      <dependency>
        <groupId>com.fasterxml.jackson.dataformat</groupId>
        <artifactId>jackson-dataformat-xml</artifactId>
        <version>${jackson2.version}</version>
      </dependency>
      <dependency>
        <groupId>com.fasterxml.woodstox</groupId>
        <artifactId>woodstox-core</artifactId>
        <version>6.4.0</version>
        <!-- match with jackson2.databind.version above -->
      </dependency>

      <dependency>
        <groupId>com.sun.mail</groupId>
        <artifactId>jakarta.mail</artifactId>
        <version>1.6.7</version>
      </dependency>
      <dependency>
        <groupId>com.sun.activation</groupId>
        <artifactId>jakarta.activation</artifactId>
        <version>1.2.2</version>
      </dependency>

      <!-- restlet: legacy -->
      <dependency>
        <groupId>org.restlet</groupId>
        <artifactId>org.restlet</artifactId>
        <version>1.0.8</version>
        <!-- Classifier selects a hacked JAR where we've removed a class we don't need and which has a security vulnerability.  This should be removed when we update to A current version of Restlet (2.2 or later)-->
        <classifier>noobjrep</classifier>
      </dependency>
      <dependency>
        <groupId>org.restlet</groupId>
        <artifactId>org.restlet</artifactId>
        <version>1.0.8</version>
        <scope>provided</scope>
      </dependency>
      <dependency>
        <groupId>org.restlet</groupId>
        <artifactId>org.restlet.ext.fileupload</artifactId>
        <version>1.0.8</version>
      </dependency>
      <dependency>
        <groupId>org.restlet</groupId>
        <artifactId>org.restlet.ext.freemarker</artifactId>
        <version>1.0.8</version>
      </dependency>
      <dependency>
        <groupId>org.restlet</groupId>
        <artifactId>org.restlet.ext.spring</artifactId>
        <version>1.0.8</version>
      </dependency>
      <dependency>
        <groupId>org.restlet</groupId>
        <artifactId>org.restlet.ext.json</artifactId>
        <version>1.0.8</version>
      </dependency>
      <dependency>
        <groupId>com.noelios.restlet</groupId>
        <artifactId>com.noelios.restlet.ext.servlet</artifactId>
        <version>1.0.8</version>
      </dependency>

      <dependency>
        <groupId>io.swagger.core.v3</groupId>
        <artifactId>swagger-core</artifactId>
        <version>2.0.2</version>
        <!-- exclude: javax.xml.bind, org.slf4j, swagger-annotations -->
      </dependency>
      <dependency>
        <groupId>com.thoughtworks.xstream</groupId>
        <artifactId>xstream</artifactId>
        <version>1.4.20</version>
        <exclusions>
          <exclusion>
            <artifactId>xpp3</artifactId>
            <groupId>xpp3_min</groupId>
          </exclusion>
        </exclusions>
      </dependency>
      <dependency>
        <groupId>com.h2database</groupId>
        <artifactId>h2</artifactId>
        <version>1.1.119</version>
      </dependency>
      <dependency>
        <groupId>org.hsqldb</groupId>
        <artifactId>hsqldb</artifactId>
        <version>${hsql.version}</version>
      </dependency>
      <dependency>
        <groupId>com.ibm.icu</groupId>
        <artifactId>icu4j</artifactId>
        <version>3.4.4</version>
      </dependency>
      <dependency>
        <groupId>com.google.guava</groupId>
        <artifactId>guava</artifactId>
        <version>33.2.0-jre</version>
      </dependency>
      <dependency>
        <groupId>com.google.code.findbugs</groupId>
        <artifactId>jsr305</artifactId>
        <version>2.0.3</version>
      </dependency>
      <dependency>
        <groupId>org.apache.poi</groupId>
        <artifactId>poi</artifactId>
        <version>${poi.version}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.poi</groupId>
        <artifactId>poi-ooxml</artifactId>
        <version>${poi.version}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.commons</groupId>
        <artifactId>commons-compress</artifactId>
        <!-- version override for version included in Apache POI 5.2.5 (which is 1.25.0) -->
        <version>1.26.1</version>
      </dependency>
      <dependency>
        <groupId>jfree</groupId>
        <artifactId>jfreechart</artifactId>
        <version>1.0.10</version>
      </dependency>
      <dependency>
        <groupId>ar.com.hjg</groupId>
        <artifactId>pngj</artifactId>
        <version>2.0.1</version>
      </dependency>
      <dependency>
        <groupId>xml-apis</groupId>
        <artifactId>xml-apis</artifactId>
        <version>1.4.01</version>
      </dependency>
      <dependency>
        <groupId>xerces</groupId>
        <artifactId>xercesImpl</artifactId>
        <version>2.12.2</version>
      </dependency>
      <dependency>
        <groupId>javax.jms</groupId>
        <artifactId>jms-api</artifactId>
        <version>1.1-rev-1</version>
      </dependency>
      <dependency>
        <groupId>org.apache.xbean</groupId>
        <artifactId>xbean-spring</artifactId>
        <version>3.5</version>
        <exclusions>
          <exclusion>
            <artifactId>commons-logging</artifactId>
            <groupId>commons-logging</groupId>
          </exclusion>
        </exclusions>
        <!-- Needed to solve NamespaceHandler class org.apache.xbean.spring.context.v2.XBeanNamespaceHandler 
             for namespace [http://activemq.apache.org/schema/core] not found ClassNotFoundException: 
             org.apache.xbean.spring.context.v2.XBeanNamespaceHandler
        -->
      </dependency>
      <dependency>
        <groupId>it.geosolutions</groupId>
        <artifactId>geoserver-manager</artifactId>
        <version>1.5.1</version>
        <scope>test</scope>
      </dependency>
      <!-- Pinned transitive dependency of gs-gwc-s3 via gwc-aws-s3 via aws-java-sdk-core. -->
      <!-- Other code should use Java 8 JSR 310 java.time instead of joda-time. -->
      <dependency>
        <groupId>joda-time</groupId>
        <artifactId>joda-time</artifactId>
        <version>${joda-time.version}</version>
      </dependency>
      <dependency>
        <groupId>it.geosolutions.imageio-ext</groupId>
        <artifactId>imageio-ext-png</artifactId>
        <version>${imageio-ext.version}</version>
      </dependency>
      <dependency>
        <groupId>it.geosolutions.imageio-ext</groupId>
        <artifactId>imageio-ext-turbojpeg</artifactId>
        <version>${imageio-ext.version}</version>
      </dependency>
      <dependency>
        <groupId>it.geosolutions.imageio-ext</groupId>
        <artifactId>imageio-ext-cog-rangereader-http</artifactId>
        <version>${imageio-ext.version}</version>
      </dependency>
      <dependency>
        <groupId>no.ecc.vectortile</groupId>
        <artifactId>java-vector-tile</artifactId>
        <version>1.3.9</version>
      </dependency>
      <dependency>
        <groupId>com.ning</groupId>
        <artifactId>compress-lzf</artifactId>
        <version>${compress-lzf.version}</version>
      </dependency>
      <dependency>
        <groupId>org.jsoup</groupId>
        <artifactId>jsoup</artifactId>
        <version>1.15.3</version>
      </dependency>
      <dependency>
        <groupId>com.github.svenmeier.wicket-dnd</groupId>
        <artifactId>wicket-dnd</artifactId>
        <version>0.7.3</version>
        <exclusions>
          <!-- wicket-dnd depends on wicket 7.0, we use a more recent version -->
          <exclusion>
            <artifactId>wicket-core</artifactId>
            <groupId>org.apache.wicket</groupId>
          </exclusion>
        </exclusions>
      </dependency>
      <dependency>
        <groupId>org.marlin</groupId>
        <artifactId>marlin</artifactId>
        <version>${marlin.version}</version>
      </dependency>
      <dependency>
        <groupId>com.github.oshi</groupId>
        <artifactId>oshi-core</artifactId>
        <version>6.4.10</version>
      </dependency>
      <dependency>
        <groupId>org.postgresql</groupId>
        <artifactId>postgresql</artifactId>
        <version>${postgresql.jdbc.version}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.solr</groupId>
        <artifactId>solr-solrj</artifactId>
        <version>${solrj.version}</version>
        <exclusions>
          <exclusion>
            <artifactId>slf4j-api</artifactId>
            <groupId>org.slf4j</groupId>
          </exclusion>
        </exclusions>
      </dependency>
      <dependency>
        <groupId>org.locationtech.jts</groupId>
        <artifactId>jts-core</artifactId>
        <version>${jts.version}</version>
        <exclusions>
          <exclusion>
            <artifactId>xercesImpl</artifactId>
            <groupId>xerces</groupId>
          </exclusion>
        </exclusions>
      </dependency>
      <dependency>
        <groupId>org.apache.directory.server</groupId>
        <artifactId>apacheds-all</artifactId>
        <version>2.0.0-M24</version>
      </dependency>
      <dependency>
        <groupId>javax.xml.bind</groupId>
        <artifactId>jaxb-api</artifactId>
        <version>2.4.0-b180830.0359</version>
      </dependency>
      <dependency>
        <groupId>org.glassfish.jaxb</groupId>
        <artifactId>jaxb-runtime</artifactId>
        <version>2.4.0-b180830.0438</version>
      </dependency>
      <dependency>
        <groupId>javax.annotation</groupId>
        <artifactId>javax.annotation-api</artifactId>
        <version>1.3.1</version>
      </dependency>
      <dependency>
        <groupId>com.hazelcast</groupId>
        <artifactId>hazelcast</artifactId>
        <version>${hazelcast.version}</version>
      </dependency>
      <dependency>
        <groupId>com.hazelcast</groupId>
        <artifactId>hazelcast</artifactId>
        <version>${hazelcast.version}</version>
        <classifier>tests</classifier>
      </dependency>
      <dependency>
        <groupId>com.hazelcast</groupId>
        <artifactId>hazelcast-spring</artifactId>
        <version>${hazelcast.version}</version>
      </dependency>
      <dependency>
        <groupId>com.github.tomakehurst</groupId>
        <artifactId>wiremock-jre8-standalone</artifactId>
        <version>2.35.1</version>
      </dependency>
    </dependencies>
  </dependencyManagement>

  <!-- common test dependencies -->
  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-test</artifactId>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.hamcrest</groupId>
      <artifactId>hamcrest-library</artifactId>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.hamcrest</groupId>
      <artifactId>hamcrest-integration</artifactId>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>xmlunit</groupId>
      <artifactId>xmlunit</artifactId>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.jsoup</groupId>
      <artifactId>jsoup</artifactId>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.awaitility</groupId>
      <artifactId>awaitility</artifactId>
      <scope>test</scope>
    </dependency>
  </dependencies>

  <repositories>
    <!-- Please do not add additional repositories as it slows the build down for everyone -->
    <repository>
      <releases>
        <enabled>true</enabled>
      </releases>
      <snapshots>
        <enabled>false</enabled>
      </snapshots>
      <id>osgeo-releases</id>
      <name>OSGeo Nexus Release Repository</name>
      <url>https://repo.osgeo.org/repository/release/</url>
      <!-- Access to OSGeo release repos:                                                  -->
      <!-- geotools-releases                                                               -->
      <!-- Geoserver-releases                                                              -->
      <!-- geonetwork-releases                                                             -->
      <!--                                                                                 -->
      <!-- Cache of third-party repos (filtered by package):                               -->
      <!-- Restlet maven Repository (http://maven.restlet.org)                             -->
      <!-- ucar (https://artifacts.unidata.ucar.edu/content/repositories/unidata-releases) -->
      <!-- geosolutions (https://maven.geo-solutions.it/)                                  -->
      <!--                                                                                 -->
      <!-- How to use:                                                                     -->
      <!-- https://wiki.osgeo.org/wiki/SAC:Repo                                            -->
      <!-- https://docs.geotools.org/latest/developer/procedures/add.html                  -->
    </repository>

    <repository>
      <releases>
        <enabled>false</enabled>
      </releases>
      <snapshots>
        <enabled>true</enabled>
      </snapshots>
      <id>osgeo-snapshots</id>
      <name>OSGeo Nexus Snapshot Repository</name>
      <url>https://repo.osgeo.org/repository/snapshot/</url>
      <!-- Access to OSGeo snapshots repositories                                          -->
    </repository>

  </repositories>

  <build>

    <extensions>
      <extension>
        <groupId>org.apache.maven.wagon</groupId>
        <artifactId>wagon-webdav</artifactId>
        <version>1.0-beta-2</version>
      </extension>
    </extensions>

    <!-- TODO: the resources stuff hardcodes paths to source + test directories,
      we should be able to use some properties here -->
    <resources>
      <resource>
        <directory>${basedir}/src/main/java</directory>
        <includes>
          <include>**/*.txt</include>
          <include>**/*.sql</include>
          <include>**/*.html</include>
          <include>**/*.xml</include>
          <include>**/*.utf</include>
          <include>**/*.properties</include>
          <include>**/*.template</include>
          <include>**/*.serialized</include>
          <include>**/*.xsd</include>
          <include>META-INF/*.jai</include>
          <include>META-INF/mailcap</include>
          <include>META-INF/services/**</include>
          <include>applicationContext.xml</include>
          <include>**/*.ftl</include>
          <include>**/*.css</include>
          <include>**/*.js</include>
          <include>**/*.png</include>
          <include>**/*.gif</include>
          <include>**/*.sld</include>
          <include>**/*.ico</include>
          <include>**/*.json</include>
        </includes>
        <excludes>
          <exclude>**/doc-files/**</exclude>
          <exclude>org/geotools/resources/i18n/**/*.properties</exclude>
        </excludes>
      </resource>
      <resource>
        <directory>${basedir}/src/main/resources</directory>
        <includes>
          <include>**/*</include>
        </includes>
      </resource>
    </resources>
    <testResources>
      <testResource>
        <directory>${basedir}/src/test/java</directory>
        <includes>
          <include>META-INF/services/**</include>
          <include>**/test-data/**</include>
          <include>**/*.html</include>
          <include>**/*.xml</include>
          <include>**/*.xsd</include>
          <include>**/*.csv</include>
          <include>**/*.sld</include>
          <include>**/*.svg</include>
          <include>**/*.gml</include>
          <include>**/*.wkt</include>
          <include>**/*.txt</include>
          <include>**/*.sql</include>
          <include>**/*.png</include>
          <include>**/*.gif</include>
          <include>**/*.js</include>
          <include>**/*.properties</include>
          <include>**/*.serialized</include>
          <include>**/*.ftl</include>
          <include>**/*.ftl.disabled</include>
          <include>**/*.tiff</include>
          <include>**/*.zip</include>
          <include>**/*.json</include>
          <include>**/*.nc</include>
          <include>**/*.grib2</include>
        </includes>
        <excludes>
          <exclude>**/doc-files/**</exclude>
        </excludes>
      </testResource>
      <testResource>
        <directory>${basedir}/src/test/resources</directory>
        <includes>
          <include>**/*</include>
        </includes>
      </testResource>
    </testResources>

    <pluginManagement>
      <plugins>
        <!-- core org.apache.maven.plugins -->
        <plugin>
          <artifactId>maven-antrun-plugin</artifactId>
          <version>3.1.0</version>
        </plugin>
        <plugin>
          <artifactId>maven-assembly-plugin</artifactId>
        </plugin>
        <plugin>
          <artifactId>maven-compiler-plugin</artifactId>
          <version>3.10.1</version>
        </plugin>
        <plugin>
          <artifactId>maven-dependency-plugin</artifactId>
          <version>3.3.0</version>
        </plugin>
        <plugin>
          <artifactId>maven-eclipse-plugin</artifactId>
          <version>2.10</version>
        </plugin>
        <plugin>
          <artifactId>maven-jar-plugin</artifactId>
          <version>2.4</version>
        </plugin>
        <plugin>
          <artifactId>maven-javadoc-plugin</artifactId>
          <version>2.10.3</version>
        </plugin>
        <plugin>
          <artifactId>maven-resources-plugin</artifactId>
          <version>3.3.0</version>
        </plugin>
        <plugin>
          <artifactId>maven-source-plugin</artifactId>
          <version>2.2.1</version>
        </plugin>
        <plugin>
          <artifactId>maven-surefire-plugin</artifactId>
          <version>2.22.2</version>
        </plugin>
        <plugin>
          <artifactId>maven-war-plugin</artifactId>
          <version>3.4.0</version>
        </plugin>

        <!-- third-party plugins -->
        <plugin>
          <groupId>com.ruleoftech</groupId>
          <artifactId>markdown-page-generator-plugin</artifactId>
          <version>2.4.0</version>
        </plugin>
      </plugins>
    </pluginManagement>

    <plugins>

      <!-- compilation -->
      <plugin>
        <artifactId>maven-compiler-plugin</artifactId>
        <configuration>
          <source>11</source>
          <target>11</target>
          <debug>true</debug>
          <encoding>UTF-8</encoding>
          <fork>${fork.javac}</fork>
          <maxmem>${javac.maxHeapSize}</maxmem>
        </configuration>
      </plugin>

      <!-- resources -->
      <plugin>
        <artifactId>maven-resources-plugin</artifactId>
        <configuration>
          <encoding>UTF-8</encoding>
        </configuration>
      </plugin>

      <!-- unit testing -->
      <plugin>
        <artifactId>maven-surefire-plugin</artifactId>
        <configuration>
          <runOrder>alphabetical</runOrder>
          <includes>
            <include>**/*Test.java</include>
          </includes>
          <excludes>
            <exclude>${test.exclude.pattern}</exclude>
          </excludes>
          <forkMode>once</forkMode>
          <enableAssertions>true</enableAssertions>
          <printSummary>true</printSummary>
          <testFailureIgnore>${allow.test.failure.ignore}</testFailureIgnore>
          <excludedGroups>${test.excludedGroups}</excludedGroups>
          <!-- Adding opens for build to work.
               Needed for mock frameworks: java.base/java.lang
               Additional needs for XStream:  java.base/java.util, java.base/java.lang.reflect, java.base/java.text, java.desktop/java.awt.font
               Additional needs for JAI: java.desktop/sun.awt.image 
               Additional needs for LDAP tests:  java.naming/com.sun.jndi.ldap
            -->
          <argLine>@{argLine} -XX:+IgnoreUnrecognizedVMOptions -Dfile.encoding=UTF-8 --add-opens=java.base/java.lang=ALL-UNNAMED --add-opens=java.base/java.util=ALL-UNNAMED --add-opens=java.base/java.lang.reflect=ALL-UNNAMED --add-opens=java.base/java.text=ALL-UNNAMED --add-opens=java.desktop/java.awt.font=ALL-UNNAMED  --add-opens=java.desktop/sun.awt.image=ALL-UNNAMED --add-opens=java.naming/com.sun.jndi.ldap=ALL-UNNAMED</argLine>
        </configuration>
      </plugin>

      <!-- artifact assembly -->
      <plugin>
        <artifactId>maven-assembly-plugin</artifactId>
        <configuration>
          <descriptors>
            <descriptor>release/war.xml</descriptor>
            <descriptor>release/javadoc.xml</descriptor>
            <descriptor>release/bin.xml</descriptor>
            <descriptor>release/data.xml</descriptor>
            <!-- extensions -->
            <descriptor>release/ext-app-schema.xml</descriptor>
            <descriptor>release/ext-authkey.xml</descriptor>
            <descriptor>release/ext-cas.xml</descriptor>
            <descriptor>release/ext-charts.xml</descriptor>
            <descriptor>release/ext-control-flow.xml</descriptor>
            <descriptor>release/ext-css.xml</descriptor>
            <descriptor>release/ext-csw-iso.xml</descriptor>
            <descriptor>release/ext-csw.xml</descriptor>
            <descriptor>release/ext-db2.xml</descriptor>
            <descriptor>release/ext-dxf.xml</descriptor>
            <descriptor>release/ext-excel.xml</descriptor>
            <descriptor>release/ext-feature-pregeneralized.xml</descriptor>
            <descriptor>release/ext-gdal.xml</descriptor>
            <descriptor>release/ext-geofence-server.xml</descriptor>
            <descriptor>release/ext-geofence-wps.xml</descriptor>
            <descriptor>release/ext-geofence.xml</descriptor>
            <descriptor>release/ext-geopkg-output.xml</descriptor>
            <descriptor>release/ext-grib.xml</descriptor>
            <descriptor>release/ext-gwc-s3.xml</descriptor>
            <descriptor>release/ext-h2.xml</descriptor>
            <descriptor>release/ext-iau.xml</descriptor>
            <descriptor>release/ext-importer.xml</descriptor>
            <descriptor>release/ext-inspire.xml</descriptor>
            <descriptor>release/ext-jp2k.xml</descriptor>
            <descriptor>release/ext-libjpeg-turbo.xml</descriptor>
            <descriptor>release/ext-mapml.xml</descriptor>
            <descriptor>release/ext-mbstyle.xml</descriptor>
            <descriptor>release/ext-metadata.xml</descriptor>
            <descriptor>release/ext-mongodb.xml</descriptor>
            <descriptor>release/ext-monitor.xml</descriptor>
            <descriptor>release/ext-mysql.xml</descriptor>
            <descriptor>release/ext-netcdf-out.xml</descriptor>
            <descriptor>release/ext-netcdf.xml</descriptor>
            <descriptor>release/ext-ogr-wfs.xml</descriptor>
            <descriptor>release/ext-ogr-wps.xml</descriptor>
            <descriptor>release/ext-oracle.xml</descriptor>
            <descriptor>release/ext-params-extractor.xml</descriptor>
            <descriptor>release/ext-printing.xml</descriptor>
            <descriptor>release/ext-pyramid.xml</descriptor>
            <descriptor>release/ext-querylayer.xml</descriptor>
            <descriptor>release/ext-sldservice.xml</descriptor>
            <descriptor>release/ext-sqlserver.xml</descriptor>
            <descriptor>release/ext-vectortiles.xml</descriptor>
            <descriptor>release/ext-wcs2_0-eo.xml</descriptor>
            <descriptor>release/ext-web-resource.xml</descriptor>
            <descriptor>release/ext-wmts-multi-dimensional.xml</descriptor>
            <descriptor>release/ext-wps-download.xml</descriptor>
            <descriptor>release/ext-wps-hazelcast.xml</descriptor>
            <descriptor>release/ext-wps-jdbc.xml</descriptor>
            <descriptor>release/ext-wps.xml</descriptor>
            <descriptor>release/ext-ysld.xml</descriptor>
            <descriptor>release/ext-rat.xml</descriptor>
          </descriptors>
          <outputDirectory>${project.build.directory}/release</outputDirectory>
        </configuration>
      </plugin>

      <!-- eclipse ide integration -->
      <plugin>
        <artifactId>maven-eclipse-plugin</artifactId>
        <configuration>
          <!--downloadSources>true</downloadSources-->
          <additionalProjectnatures>
            <projectnature>org.springframework.ide.eclipse.core.springnature</projectnature>
          </additionalProjectnatures>
        </configuration>
      </plugin>

      <plugin>
        <artifactId>maven-jar-plugin</artifactId>
        <executions>
          <execution>
            <phase>package</phase>
            <goals>
              <goal>test-jar</goal>
            </goals>
            <configuration>
              <skipIfEmpty>true</skipIfEmpty>
            </configuration>
          </execution>
        </executions>
        <configuration>
          <archive>
            <manifest>
              <addDefaultImplementationEntries>true</addDefaultImplementationEntries>
              <addDefaultSpecificationEntries>true</addDefaultSpecificationEntries>
            </manifest>
            <manifestEntries>
              <GeoServerModule>core</GeoServerModule>
              <Application-Name>${project.build.finalname}</Application-Name>
              <Project-Version>${project.version}</Project-Version>
              <Iteration-Name>${iteration}</Iteration-Name>
              <Build-Timestamp>${maven.build.timestamp}</Build-Timestamp>
              <Git-Revision>${build.commit.id}</Git-Revision>
            </manifestEntries>
          </archive>
        </configuration>
      </plugin>

      <plugin>
        <artifactId>maven-source-plugin</artifactId>
        <executions>
          <execution>
            <id>attach-sources</id>
            <goals>
              <goal>jar-no-fork</goal>
              <goal>test-jar-no-fork</goal>
            </goals>
          </execution>
        </executions>
        <inherited>true</inherited>
        <configuration>
          <attach>true</attach>
        </configuration>
      </plugin>

      <!-- initialize git revision info -->
      <plugin>
        <groupId>pl.project13.maven</groupId>
        <artifactId>git-commit-id-plugin</artifactId>
        <version>4.9.10</version>
        <executions>
          <execution>
            <goals>
              <goal>revision</goal>
            </goals>
          </execution>
        </executions>
        <configuration>
          <prefix>build</prefix>
          <failOnNoGitDirectory>false</failOnNoGitDirectory>
          <skipPoms>false</skipPoms>
          <verbose>false</verbose>
          <injectAllReactorProjects>true</injectAllReactorProjects>
          <runOnlyOnce>${git.commit.runOnlyOnce}</runOnlyOnce>
          <!--
       In order to use native git (3+ times faster) add the following in ~/.m2/settings.xml
       <profiles>
         <profile>
           <id>gitNative</id>
           <properties>
             <git.commit.useNative>true</git.commit.useNative>
           </properties>
         </profile>
       <profiles>
       <activeProfiles>
         <activeProfile>gitNative</activeProfile>
       </activeProfiles>
       -->
          <useNativeGit>${git.commit.useNative}</useNativeGit>
        </configuration>
      </plugin>

      <!-- ======================================================= -->
      <!--     Javadoc generation.                                 -->
      <!-- ======================================================= -->
      <plugin>
        <artifactId>maven-javadoc-plugin</artifactId>
        <configuration>
          <source>11</source>
          <version>false</version>
          <noqualifier>all</noqualifier>
          <quiet>true</quiet>
          <maxmemory>512M</maxmemory>
          <encoding>UTF-8</encoding>
          <failOnError>false</failOnError>

          <additionalparam>-Xdoclint:none</additionalparam>
          <breakiterator>true</breakiterator>
          <tags>
            <tag>
              <name>generated</name>
              <placement>tfmc</placement>
              <head>GENERATED:</head>
            </tag>
            <tag>
              <name>todo</name>
              <placement>tfmc</placement>
              <head>TODO:</head>
            </tag>
            <tag>
              <name>task</name>
              <placement>tfmc</placement>
              <head>TODO:</head>
            </tag>
            <tag>
              <name>revisit</name>
              <placement>tfmc</placement>
              <head>TODO:</head>
            </tag>
            <tag>
              <name>source</name>
              <placement>Xt</placement>
              <head>Source:</head>
            </tag>
            <tag>
              <name>tutorial</name>
              <placement>Xt</placement>
              <head>Tutorial:</head>
            </tag>
          </tags>

          <links>
            <link>https://docs.oracle.com/en/java/javase/11/docs/api</link>
            <link>http://docs.oracle.com/javaee/7/api/</link>
            <link>http://jscience.org/api/</link>
            <link>https://locationtech.github.io/jts/javadoc/</link>
            <link>http://docs.geotools.org/latest/javadocs/</link>
            <link>http://xmlgraphics.apache.org/batik/javadoc</link>
            <link>http://freemarker.sourceforge.net/docs/api/</link>
            <link>https://ci.apache.org/projects/wicket/apidocs/7.x/</link>
          </links>
        </configuration>
      </plugin>

      <plugin>
        <groupId>com.diffplug.spotless</groupId>
        <artifactId>spotless-maven-plugin</artifactId>
        <version>2.22.1</version>
        <executions>
          <execution>
            <phase>validate</phase>
            <goals>
              <goal>${spotless.action}</goal>
            </goals>
          </execution>
        </executions>
        <configuration>
          <java>
            <googleJavaFormat>
              <version>1.7</version>
              <style>AOSP</style>
            </googleJavaFormat>
          </java>
          <upToDateChecking>
            <enabled>true</enabled>
            <indexFile>${project.basedir}/.spotless-index</indexFile>
          </upToDateChecking>
        </configuration>
      </plugin>

      <plugin>
        <groupId>com.github.ekryd.sortpom</groupId>
        <artifactId>sortpom-maven-plugin</artifactId>
        <version>2.15.0</version>
        <executions>
          <execution>
            <phase>verify</phase>
            <goals>
              <goal>${pom.fmt.action}</goal>
            </goals>
          </execution>
        </executions>
        <configuration>
          <skip>${pom.fmt.skip}</skip>
          <keepBlankLines>true</keepBlankLines>
          <spaceBeforeCloseEmptyElement>false</spaceBeforeCloseEmptyElement>
          <createBackupFile>false</createBackupFile>
          <verifyFail>stop</verifyFail>
          <verifyFailOn>strict</verifyFailOn>
        </configuration>
      </plugin>

      <plugin>
        <groupId>org.commonjava.maven.plugins</groupId>
        <artifactId>directory-maven-plugin</artifactId>
        <version>0.3.1</version>
        <executions>
          <execution>
            <id>directories</id>
            <phase>initialize</phase>
            <goals>
              <goal>highest-basedir</goal>
            </goals>
            <configuration>
              <property>geoserverBaseDir</property>
            </configuration>
          </execution>
        </executions>
      </plugin>

    </plugins>

  </build>

  <reporting>
    <plugins>

      <!-- website -->
      <plugin>
        <artifactId>maven-site-plugin</artifactId>
        <version>3.0</version>
      </plugin>

      <!-- ======================================================= -->
      <!--     Javadoc generation.                                 -->
      <!-- ======================================================= -->
      <plugin>
        <artifactId>maven-javadoc-plugin</artifactId>
        <configuration>
          <source>11</source>
          <version>false</version>
          <noqualifier>all</noqualifier>
          <quiet>true</quiet>
          <maxmemory>256M</maxmemory>
          <encoding>UTF-8</encoding>

          <additionalparam>-Xdoclint:none</additionalparam>
          <breakiterator>true</breakiterator>
          <tags>
            <tag>
              <name>generated</name>
              <placement>tfmc</placement>
              <head>GENERATED:</head>
            </tag>
            <tag>
              <name>todo</name>
              <placement>tfmc</placement>
              <head>TODO:</head>
            </tag>
            <tag>
              <name>task</name>
              <placement>tfmc</placement>
              <head>TODO:</head>
            </tag>
            <tag>
              <name>revisit</name>
              <placement>tfmc</placement>
              <head>TODO:</head>
            </tag>
            <tag>
              <name>source</name>
              <placement>Xt</placement>
              <head>Source:</head>
            </tag>
            <tag>
              <name>tutorial</name>
              <placement>Xt</placement>
              <head>Tutorial:</head>
            </tag>
          </tags>

          <links>
            <link>http://docs.oracle.com/javase/8/docs/api/</link>
            <link>http://docs.oracle.com/javaee/7/api/</link>
            <link>http://jscience.org/api/</link>
            <link>http://tsusiatsoftware.net/jts/javadoc</link>
            <link>http://docs.geotools.org/latest/javadocs/</link>
            <link>http://xmlgraphics.apache.org/batik/javadoc</link>
            <link>http://freemarker.sourceforge.net/docs/api/</link>
            <link>https://ci.apache.org/projects/wicket/apidocs/7.x/</link>
          </links>
        </configuration>
      </plugin>

      <!-- basic project information -->
      <plugin>
        <artifactId>maven-project-info-reports-plugin</artifactId>
        <version>2.4</version>
      </plugin>

      <!-- test reports -->
      <plugin>
        <artifactId>maven-surefire-report-plugin</artifactId>
        <version>2.12</version>
        <configuration>
          <linkXRef>true</linkXRef>
        </configuration>
      </plugin>

      <!-- HTML based, cross-reference version of Java source code -->
      <plugin>
        <artifactId>maven-jxr-plugin</artifactId>
        <version>2.1</version>
        <configuration>
          <aggregate>true</aggregate>
        </configuration>
      </plugin>

      <!-- Report on various tags found in the code -->
      <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>taglist-maven-plugin</artifactId>
        <version>2.4</version>
        <configuration>
          <tags>
            <tag>@revisit</tag>
            <tag>@todo</tag>
            <tag>TODO</tag>
            <tag>FIXME</tag>
          </tags>
        </configuration>
      </plugin>

      <!-- jacoco plugin (test code coverage reports) -->
      <plugin>
        <groupId>org.jacoco</groupId>
        <artifactId>jacoco-maven-plugin</artifactId>
        <version>${jacoco.version}</version>
        <configuration>
          <formats>
            <format>html</format>
            <format>xml</format>
          </formats>
        </configuration>
      </plugin>

    </plugins>
  </reporting>

  <profiles>
    <profile>
      <!-- optional:geosolutions repo when resolving dependencies      -->
      <!--                                                             -->
      <!-- osgeo-releases repo already caches:                         -->
      <!--   ^/com/oracle/.*                                           -->
      <!--   ^/it/geosolutions/jaiext/.*                               -->
      <!--   ^/it/geosolutions/imageio-ext/.*                          -->
      <!--   ^/me/steinborn/libdeflate-iava-core/.*                    -->
      <!--   ^/opendap/.*                                              -->
      <!--   ^/org/hibernatespatial/.*                                 -->
      <!--   ^/org/libjpegturbo/.*                                     -->
      <!--   ^/sf/json-lib/.*                                          -->
      <id>geosolutions</id>
      <repositories>
        <repository>
          <releases>
            <enabled>true</enabled>
          </releases>
          <id>geosolutions</id>
          <name>geosolutions repository</name>
          <url>https://maven.geo-solutions.it/</url>
        </repository>
      </repositories>
    </profile>

    <profile>
      <!-- uml graphing -->
      <id>uml</id>
      <activation>
        <property>
          <name>uml</name>
        </property>
      </activation>
      <reporting>
        <plugins>
          <plugin>
            <artifactId>maven-javadoc-plugin</artifactId>
            <configuration>
              <doclet>gr.spinellis.umlgraph.doclet.UmlGraphDoc</doclet>
              <docletArtifact>
                <groupId>gr.spinellis</groupId>
                <artifactId>UmlGraph</artifactId>
                <version>4.4</version>
              </docletArtifact>
              <additionalparam>-inferrel -inferdep -quiet -hide java.* -collpackages java.util.* -qualify
          -postfixpackage -nodefontsize 9
          -nodefontpackagesize 7
          -link http://java.sun.com/j2se/1.5/docs/api
          -link http://java.sun.com/j2ee/1.4/docs/api
          -link http://java.sun.com/products/java-media/jai/forDevelopers/jai-apidocs
           -link http://java.sun.com/products/java-media/3D/forDevelopers/j3dapi
           -link http://jsr-108.sourceforge.net/javadoc
           -link http://www.jump-project.org/docs/jts/1.7/api
           -link http://www.geotools.fr/javadoc/2.2/
           -link http://xmlgraphics.apache.org/batik/javadoc
           -tag todo:tfmc:TODO:
           -tag task:tfmc:TODO:
           -tag revisit:tfmc:TODO:
           -tag source:Xt:Source:
           -tag tutorial:Xt:Tutorial:</additionalparam>
            </configuration>
          </plugin>
        </plugins>
      </reporting>
    </profile>

    <profile>
      <id>release</id>
      <activation>
        <property>
          <name>release</name>
        </property>
      </activation>
      <build>
        <plugins>

          <!-- grab a geotools dependnecy to figure out its version -->
          <plugin>
            <artifactId>maven-dependency-plugin</artifactId>
            <executions>
              <execution>
                <id>copy-dependencies</id>
                <phase>package</phase>
                <goals>
                  <goal>copy-dependencies</goal>
                </goals>
                <configuration>
                  <includeGroupIds>org.geotools,org.geowebcache</includeGroupIds>
                  <includeArtifactIds>gt-main,gwc-core</includeArtifactIds>
                </configuration>
              </execution>
            </executions>
          </plugin>

          <plugin>
            <artifactId>maven-antrun-plugin</artifactId>
            <executions>
              <execution>
                <id>read-manifest</id>
                <phase>package</phase>
                <goals>
                  <goal>run</goal>
                </goals>
                <configuration>
                  <target>
                    <loadproperties prefix="gt">
                      <zipentry name="META-INF/MANIFEST.MF" zipfile="target/dependency/gt-main-${gt.version}.jar"></zipentry>
                    </loadproperties>
                    <loadproperties prefix="gwc">
                      <zipentry name="META-INF/MANIFEST.MF" zipfile="target/dependency/gwc-core-${gwc.version}.jar"></zipentry>
                    </loadproperties>
                    <copy file="release/VERSION.txt" filtering="true" todir="target">
                      <filterset begintoken="$${" endtoken="}">
                        <filter token="project.version" value="${project.version}"></filter>
                        <filter token="build.revision" value="${build.commit.id}"></filter>
                        <filter token="build.branch" value="${build.branch}"></filter>
                        <filter token="build.timestamp" value="${build.timestamp}"></filter>
                        <filter token="gt.version" value="${gt.version}"></filter>
                        <filter token="gt.revision" value="${gt.Git-Revision}"></filter>
                        <filter token="gwc.version" value="${gwc.version}"></filter>
                        <filter token="gwc.revision" value="${gwc.Implementation-Version}"></filter>
                        <filter token="build.hudsonId" value="${build.hudsonId}"></filter>
                      </filterset>
                    </copy>
                  </target>
                </configuration>
              </execution>
            </executions>
            <dependencies>
              <dependency>
                <groupId>org.apache.ant</groupId>
                <artifactId>ant</artifactId>
                <version>${ant.version}</version>
              </dependency>
              <dependency>
                <groupId>ant-contrib</groupId>
                <artifactId>ant-contrib</artifactId>
                <version>1.0b3</version>
              </dependency>
            </dependencies>
            <inherited>false</inherited>
          </plugin>
        </plugins>
      </build>
      <modules>
        <module>release</module>
      </modules>
      <dependencies>
        <dependency>
          <groupId>org.geotools</groupId>
          <artifactId>gt-main</artifactId>
        </dependency>
        <dependency>
          <groupId>org.geowebcache</groupId>
          <artifactId>gwc-core</artifactId>
        </dependency>
      </dependencies>
    </profile>

    <profile>
      <id>findbugs</id>
      <build>
        <plugins>
          <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>findbugs-maven-plugin</artifactId>
            <version>2.4.0</version>
            <configuration>
              <excludeFilterFile>file:${findbugs.excludeFilterFile}</excludeFilterFile>
            </configuration>
          </plugin>
        </plugins>
      </build>
    </profile>
    <profile>
      <id>skipSystemTests</id>
      <properties>
        <test.excludedGroups>org.geoserver.test.SystemTest</test.excludedGroups>
      </properties>
    </profile>
    <profile>
      <id>remoteOwsTests</id>
      <properties>
        <remoteOwsTests>true</remoteOwsTests>
      </properties>
    </profile>

    <!-- code coverage -->
    <profile>
      <id>jacoco</id>
      <build>
        <plugins>
          <plugin>
            <groupId>org.jacoco</groupId>
            <artifactId>jacoco-maven-plugin</artifactId>
            <version>${jacoco.version}</version>
            <executions>
              <execution>
                <id>pre-unit-test</id>
                <goals>
                  <goal>prepare-agent</goal>
                </goals>
              </execution>
              <execution>
                <id>post-unit-test</id>
                <phase>test</phase>
                <goals>
                  <goal>report</goal>
                </goals>
              </execution>
            </executions>
          </plugin>
        </plugins>
      </build>
    </profile>

    <!-- Dependency vulnerability checks -->
    <profile>
      <id>dependencycheck</id>
      <build>
        <plugins>
          <plugin>
            <groupId>org.owasp</groupId>
            <artifactId>dependency-check-maven</artifactId>
            <version>7.1.1</version>
            <executions>
              <execution>
                <goals>
                  <goal>aggregate</goal>
                </goals>
              </execution>
            </executions>
            <configuration>
              <failBuildOnCVSS>7</failBuildOnCVSS>
              <suppressionFile>${geoserverBaseDir}/../build/qa/dependency-check-suppression.xml</suppressionFile>
              <format>ALL</format>
            </configuration>
          </plugin>
        </plugins>
      </build>
    </profile>

    <profile>
      <id>pmd</id>
      <activation>
        <property>
          <name>qa</name>
        </property>
      </activation>
      <build>
        <plugins>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-pmd-plugin</artifactId>
            <version>3.14.0</version>
            <executions>
              <execution>
                <goals>
                  <goal>check</goal>
                </goals>
              </execution>
            </executions>
            <dependencies>
              <dependency>
                <groupId>net.sourceforge.pmd</groupId>
                <artifactId>pmd-core</artifactId>
                <version>${pmd.version}</version>
              </dependency>
              <dependency>
                <groupId>net.sourceforge.pmd</groupId>
                <artifactId>pmd-java</artifactId>
                <version>${pmd.version}</version>
              </dependency>
              <dependency>
                <groupId>net.sourceforge.pmd</groupId>
                <artifactId>pmd-javascript</artifactId>
                <version>${pmd.version}</version>
              </dependency>
              <dependency>
                <groupId>net.sourceforge.pmd</groupId>
                <artifactId>pmd-jsp</artifactId>
                <version>${pmd.version}</version>
              </dependency>
            </dependencies>
            <configuration>
              <rulesets>
                <ruleset>${geoserverBaseDir}/../build/qa/pmd-ruleset.xml</ruleset>
                <ruleset>${geoserverBaseDir}/../build/qa/pmd-junit-ruleset.xml</ruleset>
              </rulesets>
              <failurePriority>3</failurePriority>
              <minimumPriority>3</minimumPriority>
              <verbose>true</verbose>
              <printFailingErrors>true</printFailingErrors>
              <includeTests>true</includeTests>
              <sourceEncoding>UTF-8</sourceEncoding>
              <outputEncoding>UTF-8</outputEncoding>
              <excludeRoots>
                <excludeRoot>target/generated-sources</excludeRoot>
              </excludeRoots>
            </configuration>
          </plugin>
        </plugins>
      </build>
    </profile>

    <profile>
      <id>errorprone</id>
      <activation>
        <property>
          <name>qa</name>
        </property>
      </activation>
      <build>
        <plugins>
          <plugin>
            <artifactId>maven-compiler-plugin</artifactId>
            <configuration>
              <fork>false</fork>
              <compilerArgs>
                <arg>-XDcompilePolicy=simple</arg>
                <arg>-Xplugin:ErrorProne -XepExcludedPaths:\Q${project.build.directory}\E.* ${errorProneFlags}</arg>
                <arg>-Xlint:${lint}</arg>
                <arg>-Werror</arg>
                <arg>-Xmaxwarns</arg>
                <arg>1000</arg>
              </compilerArgs>
              <annotationProcessorPaths>
                <path>
                  <groupId>com.google.errorprone</groupId>
                  <artifactId>error_prone_core</artifactId>
                  <version>${errorProne.version}</version>
                </path>
              </annotationProcessorPaths>
            </configuration>
          </plugin>
        </plugins>
      </build>
    </profile>

    <profile>
      <id>spotbugs</id>
      <activation>
        <property>
          <name>qa</name>
        </property>
      </activation>
      <build>
        <plugins>
          <plugin>
            <groupId>com.github.spotbugs</groupId>
            <artifactId>spotbugs-maven-plugin</artifactId>
            <version>4.7.3.4</version>
            <executions>
              <execution>
                <goals>
                  <goal>check</goal>
                </goals>
              </execution>
            </executions>
            <configuration>
              <effort>More</effort>
              <!--threshold>High</threshold-->
              <xmlOutput>true</xmlOutput>
              <maxRank>15</maxRank>
              <excludeFilterFile>${geoserverBaseDir}/../build/qa/spotbugs-exclude.xml</excludeFilterFile>
            </configuration>
          </plugin>
        </plugins>
      </build>
    </profile>

    <profile>
      <id>checkstyle</id>
      <activation>
        <property>
          <name>qa</name>
        </property>
      </activation>
      <build>
        <plugins>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-checkstyle-plugin</artifactId>
            <version>3.1.1</version>
            <executions>
              <execution>
                <goals>
                  <goal>check</goal>
                </goals>
              </execution>
            </executions>
            <configuration>
              <encoding>UTF-8</encoding>
              <logViolationsToConsole>true</logViolationsToConsole>
              <!-- ignore generated classes, e.g., javacc ones -->
              <sourceDirectories>${project.build.sourceDirectory}</sourceDirectories>
              <skip>${checkstyle.skip}</skip>
              <configLocation>${geoserverBaseDir}/../build/qa/checkstyle.xml</configLocation>
            </configuration>
          </plugin>
        </plugins>
      </build>
    </profile>

    <profile>
      <id>enforcer</id>
      <activation>
        <property>
          <name>qa</name>
        </property>
      </activation>
      <build>
        <plugins>
          <plugin>
            <artifactId>maven-enforcer-plugin</artifactId>
            <version>3.0.0</version>
            <executions>
              <execution>
                <id>localization-encodings</id>
                <goals>
                  <goal>enforce</goal>
                </goals>
                <configuration>
                  <rules>
                    <requireEncoding>
                      <encoding>UTF-8</encoding>
                      <includes>src/main/resources/GeoServerApplication*.utf8.properties</includes>
                    </requireEncoding>
                    <requireEncoding>
                      <encoding>ISO-8859-1</encoding>
                      <acceptAsciiSubset>true</acceptAsciiSubset>
                      <includes>src/main/resources/GeoServerApplication*.properties</includes>
                      <excludes>src/main/resources/GeoServerApplication*.utf8.properties</excludes>
                    </requireEncoding>
                  </rules>
                  <failFast>false</failFast>
                </configuration>
              </execution>
            </executions>
            <dependencies>
              <dependency>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>extra-enforcer-rules</artifactId>
                <version>1.3</version>
              </dependency>
            </dependencies>
          </plugin>
        </plugins>
      </build>
    </profile>
  </profiles>

</project>
